﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace InterfaceFiles
{
  public interface IInterfaceHeader
  {
    /// <summary>
    /// The titles of the interface file
    /// </summary>
    List<string> Titles { get; set; }

    /// <summary>
    /// The nodes in the interface file
    /// </summary>
    List<string> Nodes { get; set; }

    /// <summary>
    /// The titles of the interface file
    /// </summary>
    /// <param name="index">Index of titles</param>
    /// <returns>Title at index</returns>
    string this[int index] { get; set; }

    /// <summary>
    /// Start time of interface file
    /// </summary>
    DateTime StartTime { get; set; }

    /// <summary>
    /// Source block (model) of interface file
    /// </summary>
    string SourceBlock { get; set; }

    /// <summary>
    /// Number of nodes in interface file
    /// </summary>
    int NumNodes { get; set; }

    /// <summary>
    /// Number of pollutants in interface file
    /// </summary>
    int NumPollutants { get; set; }

    /// <summary>
    /// Area in square feet representing model input area
    /// </summary>
    Double Area_sqft { get; set; }

    /// <summary>
    /// Whether interface file uses alphanumeric IDs (true = use alphanumerics)
    /// </summary>
    bool UseAlphaNumIDs { get; set; }

    /// <summary>
    /// The multiplier against which all flows in the file will be multiplied
    /// </summary>
    double FlowMultiplier { get; set; }
  
    /// <summary>
    /// Read an interface file header
    /// </summary>
    void Read();

    /// <summary>
    /// Write an interface file header
    /// </summary>
    void Write();

    /// <summary>
    /// Write an interface file header using another header's data
    /// </summary>
    /// <param name="header">The other header</param>
    void Write(IInterfaceHeader header);
  }
}
